// 核心文件
import axios from "axios"; //引入axios模块
import API from "./content.js"; //解构赋值获取到METHODS的值
import {
  Loading
} from 'element-ui';
var loadingShow = null;
// 创建axios实例返回一个promise对象（） 完成配置项
const instance = axios.create({
  // `baseURL` 将自动加在 `url` 前面，除非 `url` 是一个绝对 URL。
  // 它可以通过设置一个 `baseURL` 便于为 axios 实例的方法传递相对 URL
  baseURL: 'https://api.it120.cc/small4',
  timeout: 5000, //超时时间
  // headers: {'X-Custom-Header': 'foobar'} //设置请求头
});

// 添加请求拦截器
instance.interceptors.request.use(function (config) {
  // 在发送请求之前做些什么(请求还没有发出)
  // 弹起lodding控件
  // 拦截请求 config配置 动态添加或删除配置
  loadingShow = Loading.service();
  return config;
}, function (error) {
  // 对请求错误做些什么
  // 提示用户请求发送失败的原因
  return Promise.reject(error);
});

// 添加响应拦截器
instance.interceptors.response.use(function (response) {
  // 对响应数据做点什么（服务器已响应请求并返回）
  // 对自身服务器响应的状态码进行处理
  setTimeout(function () {
    loadingShow.close();
  }, 800)
  return response;
}, function (error) {
  // 对响应错误做点什么
  // 网络问题、服务器的问题
  return Promise.reject(error);
});




//封装 判断请求方式 （POST、GET）
// export 抛出request 函数

// type:请求方式（POST、GET）
// url参数：请求地址
// params参数:请求的参数
export function request(type, url, params) {
  switch (type) {
    //当请求方式为post请求时，调用封装的post函数
    case API.METHODS.POST:
      return post(url, params);
      //当请求方式为get请求时，调用封装的get函数
    case API.METHODS.GET:
      return get(url, params);
  }
}


//封装的get请求方式
// url参数：请求地址
// params参数:请求的参数
function get(url, params) {
  return instance.get(url, params)
}

//封装的post请求方式
// url参数：请求地址
// params参数:请求的参数
function post(url, params) {
  return instance.post(url, params)
}